﻿using System;
using System.Windows.Forms;
using Scommesse.Presenters.Admin;

namespace Scommesse.View.Admin
{
    public partial class CompetizioneDialog : Form
    {
        private ICompetizionePresenter _competizionePresenter;

        public CompetizioneDialog()
        {
            InitializeComponent();
        }

        public void AddListener(ICompetizionePresenter presenter)
        {
            _competizionePresenter = presenter;
        }

        #region Properties

        public DateTime StartDate
        {
            get { return StartDateTimePicker.Value; }
            set { StartDateTimePicker.Value = value; }
        }

        public DateTime FinishDate
        {
            get { return FinishDateTimePicker.Value; }
            set { FinishDateTimePicker.Value = value; }
        }

        public bool CompEsistente
        {
            set { EsisteLabel.Visible = value; }
        }

        public String SetCategoria
        {
            set { ListaCategorieComboBox.Items.Add(value); }
        }

        public String DataError
        {
            set { DataErrorProvider.SetError(FinishDateTimePicker, value); }
        }

        public String CompetizioneError
        {
            set { CompErrorProvider.SetError(NomeCompetizioneTextBox, value); }
        }

        public String CategoriaError
        {
            set { CatErrorProvider.SetError(ListaCategorieComboBox, value); }
        }

        public String NomeCompetizione
        {
            get { return NomeCompetizioneTextBox.Text.Trim(); }
        }

        public String NomeCategoria
        {
            get { return ListaCategorieComboBox.SelectedItem.ToString(); }
        }

        #endregion

        // Inizializza la form appena viene showata per la prima volta
        private void CompetizioneDialog_Shown(object sender, EventArgs e)
        {
            NomeCompetizioneTextBox.Clear();
            ListaCategorieComboBox.Items.Clear();

            _competizionePresenter.Load_View();
        }

        private void ConfermaAggiungiCompetizioneButton_Click(object sender, EventArgs e)
        {
            CompErrorProvider.Clear();
            CatErrorProvider.Clear();
            DataErrorProvider.Clear();

            _competizionePresenter.ConfermaAggiungiCompetizione();
        }


        private void AnnullaAggiungiCompetizioneButton_Click(object sender, EventArgs e)
        {
            Close();
        }

        #region Auto Click On Enter

        private void NomeCompetizioneTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiCompetizioneButton.PerformClick();
        }

        private void ListaCategorieComboBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiCompetizioneButton.PerformClick();
        }

        private void StartDateTimePicker_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiCompetizioneButton.PerformClick();
        }

        private void FinishDateTimePicker_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                ConfermaAggiungiCompetizioneButton.PerformClick();
        }

        #endregion
    }
}